MVVM (Model-View-ViewModel) একটি জনপ্রিয় ডিজাইন প্যাটার্ন যা .NET MAUI এবং অন্যান্য UI ভিত্তিক অ্যাপ্লিকেশনের উন্নয়নে ব্যবহৃত হয়। এটি মূলত UI (ব্যবহারকারীর ইন্টারফেস) এবং ব্যাকএন্ড লজিক (ডেটা এবং ব্যবসায়িক লজিক) এর মধ্যে পরিষ্কার আলাদা করার জন্য ডিজাইন করা হয়েছে। MVVM প্যাটার্নে তিনটি মূল উপাদান থাকে:
- Model
- View
- ViewModel
এই তিনটি উপাদান একে অপরের সাথে যোগাযোগ করে, কিন্তু তাদের কাজ এবং দায়িত্বের ক্ষেত্র আলাদা থাকে।
1. Model (মডেল)
Model হল অ্যাপ্লিকেশনের ডেটা এবং ব্যবসায়িক লজিক। এটি সমস্ত ডেটা বা ডেটার সংজ্ঞা, নিয়ম এবং এপ্লিকেশনের শর্তাবলী ধারণ করে। Model এর প্রধান কাজ হল ডেটা সংরক্ষণ এবং ডেটা সম্পর্কিত কাজ করা, যেমন: ডেটা সংগ্রহ করা, আপডেট করা বা ভ্যালিডেশন করা।
- Model এর সাথে UI বা View এর কোনো সরাসরি সম্পর্ক থাকে না।
- Model ডেটার ভিত্তিতে কাজ করে এবং এটি সাধারণত ডেটাবেস বা API থেকে ডেটা সংগ্রহ করে।
উদাহরণ:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
এখানে, Person একটি Model যা ডেটা ধারণ করে, যেমন Name এবং Age।
2. View (ভিউ)
View হল ব্যবহারকারীর ইন্টারফেস (UI), যা ব্যবহারকারীকে ডেটা দেখায় এবং ব্যবহারকারীর ইন্টারঅ্যাকশন গ্রহণ করে। এটি মূলত UI কন্ট্রোল (যেমন: Label, Button, Entry) থেকে গঠিত। View এর মূল কাজ হল দেখানো এবং ইন্টারঅ্যাক্ট করা; তবে এতে কোনো ব্যবসায়িক লজিক বা ডেটা প্রক্রিয়াকরণের কাজ থাকে না।
- View শুধুমাত্র ViewModel এর সাথে যোগাযোগ করে এবং ডেটা দেখানোর জন্য কেবল binding ব্যবহার করে।
- View শুধুমাত্র ইউজার ইন্টারঅ্যাকশন গ্রহণ করে, তবে এটি Model বা ডেটার সাথে সরাসরি কাজ করে না।
উদাহরণ:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyApp.MainPage">
<Label Text="{Binding Name}" />
<Button Text="Change Name" Command="{Binding ChangeNameCommand}" />
</ContentPage>
এখানে, Label এবং Button হল View উপাদান যা ViewModel এর সাথে data binding এর মাধ্যমে যুক্ত।
3. ViewModel (ভিউমডেল)
ViewModel হল Model এবং View এর মধ্যে একটি মধ্যস্থতাকারী উপাদান। এটি Model থেকে ডেটা সংগ্রহ করে এবং View এর জন্য উপস্থাপনযোগ্য রূপে রূপান্তরিত করে। ViewModel ব্যবহারকারীর ইন্টারঅ্যাকশন এবং ডেটা চেঞ্জ এর জন্য ইভেন্ট এবং কমান্ড সরবরাহ করে।
- ViewModel Model এর ডেটা ধারণ করে এবং সেগুলিকে View এর জন্য প্রস্তুত করে (ডেটা ফরম্যাটিং, ভ্যালিডেশন ইত্যাদি)।
- ViewModel এবং View এর মধ্যে data binding থাকে, যা UI কে ডেটা এবং ইউজার ইন্টারঅ্যাকশন পরিবর্তনগুলোর সাথে সিঙ্ক্রোনাইজ করে।
উদাহরণ:
public class MainPageViewModel : INotifyPropertyChanged
{
private string _name;
public string Name
{
get => _name;
set
{
_name = value;
OnPropertyChanged();
}
}
public ICommand ChangeNameCommand { get; }
public MainPageViewModel()
{
ChangeNameCommand = new Command(ChangeName);
}
private void ChangeName()
{
Name = "John Smith";
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
এখানে, ViewModel Name প্রপার্টি এবং ChangeNameCommand কমান্ডের মাধ্যমে View কে ডেটা এবং ইন্টারঅ্যাকশন সরবরাহ করছে।
Model, View, এবং ViewModel এর সম্পর্ক
- Model: ডেটা সংরক্ষণ এবং ব্যবসায়িক লজিক (যেমন
Personক্লাস)। - View: UI উপাদানগুলি যেমন
Label,Buttonযা ব্যবহারকারীকে দেখানো হয় এবং ইন্টারঅ্যাকশন নেওয়া হয়। - ViewModel: Model থেকে ডেটা নিয়ে তা View এর জন্য উপস্থাপন করে। এটি Model এবং View এর মধ্যে একটি মধ্যস্থতাকারী হিসেবে কাজ করে।
MVVM প্যাটার্নের কাজের প্রক্রিয়া:
- Model ডেটা প্রস্তুত করে এবং ViewModel এর মাধ্যমে সেটি View এ প্রেরণ করা হয়।
- ViewModel ডেটা পরিবর্তন এবং ব্যবহারকারীর ইন্টারঅ্যাকশন (যেমন: বোতাম টিপলে কি হবে) পরিচালনা করে।
- View ব্যবহারকারীর ইন্টারঅ্যাকশন (যেমন: বোতাম ক্লিক করা) গ্রহণ করে এবং এটি ViewModel এর কমান্ডের মাধ্যমে Model এর সাথে যোগাযোগ করে।
উপসংহার:
MVVM প্যাটার্ন ব্যবহার করলে:
- Model এবং View এর মধ্যে সরাসরি সম্পর্কের প্রয়োজন হয় না।
- View এবং ViewModel এর মধ্যে data binding এর মাধ্যমে যোগাযোগ ঘটে।
- ViewModel হল Model এবং View এর মধ্যে একটি মধ্যস্থতাকারী, যা ডেটাকে ভিউয়ের জন্য প্রস্তুত করে এবং UI এবং ডেটার মধ্যে সিঙ্ক্রোনাইজেশন নিশ্চিত করে।
এভাবে, MVVM অ্যাপ্লিকেশন ডেভেলপমেন্টকে পরিষ্কার, মডুলার এবং পুনঃব্যবহারযোগ্য করে তোলে।
Read more